package com.itfenghuang.day04;
//        1.Object是所有类的直接或间接父类
//        2.        常用方法:
//                    public boolean equals (Object  obj)  用来比较两个对象是否相等
//        3. 面试题    ==和equals的区别
//                     ==:   基本数据类型比较的是值   引用数据类型比较地址
//                     equals():   比较引用数据类型   如果没有重写比较地址     如果重写按照重写后的规则进行比较
//
//                  public String toString()  返回对象的字符串表示形式。    在输出对象的时候没有调用toString方法    默认会调用

import java.util.Objects;

public class A05_Object {
    public static void main(String[] args) {
        Father f1 = new Father();
        Father f2 = new Father();
        System.out.println(f1.equals(f2));
//        Father f1 = new Father("tom",13,"女");
//        Father f2 = new Father("tom",13,"女");
//        System.out.println(f1.equals(f2));
//        测试toString方法
//        Father f1 = new Father("tom",13,"女");
//        System.out.println(f1);
//        System.out.println(f1.toString());
    }
}
class Father{
    public String name;
    public int age;
    public String sex;
    public Father(){
//      调用父类的构造方法
        super();//在有效代码的第一行
    }

    public Father(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

//    @Override
//    public boolean equals(Object o) {
//        if (this == o) return true;
//        if (o == null || getClass() != o.getClass()) return false;
//        Father father = (Father) o;
//        return age == father.age &&
//                Objects.equals(name, father.name) &&
//                Objects.equals(sex, father.sex);
//    }

//    @Override
//    public int hashCode() {
//        return Objects.hash(name, age, sex);
//    }
//
    @Override
    public String toString() {
        return "Father{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }

}